OpenPyXLを使ってPythonでエクセルファイルを作成する
OpenPyXLの雰囲気やおおよその使い方を把握できました。
2024.07.04
Pythonを使ってエクセルファイルを作成することになりそうなので、どのような方法で実現できるのかを軽く調べて試してみました。本記事ではOpenPyXLを利用します。軽く試すだけですが、実現できることはたくさんあります。公式ドキュメントをご確認ください。
おすすめの方
- Pythonでエクセルファイルを作成したい方
- OpenPyXLの雰囲気を知りたい方
openpyxlをインストールする
pip install openpyxl
お試しのPythonコード
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
DATA = [
["日時", "温度", "湿度"],
["2024-07-01 00:00:00", 20, 50],
["2024-07-01 00:10:00", 21.1, 51],
["2024-07-01 00:20:00", 22.2, 52],
["2024-07-01 00:30:00", 23.3, 53],
["2024-07-01 00:40:00", 24.4, 54],
["2024-07-01 00:50:00", 25.5, 55],
]
SHEET1_NAME = "テスト1"
SHEET2_NAME = "テスト2"
def main():
wb = Workbook()
ws = wb.active
ws.title = SHEET1_NAME
for row in DATA:
ws.append(row)
# 1行目を太字にして、背景色をつけて、中央寄せにする
ft = Font(bold=True) # 太字
fill = PatternFill(
fill_type="solid", # シンプルな塗りつぶし
start_color="ADD8E6", end_color="ADD8E6", # 開始と終了が同じ色(グラデーション無し)
)
alignment = Alignment(horizontal="center", vertical="center")
for row in ws["A1:C1"]:
for cell in row:
cell.font = ft
cell.fill = fill
cell.alignment = alignment
# 数値のフォーマットを設定する
for row in ws.iter_rows(
min_row=2, max_row=len(DATA), # データのある行(2行目〜7行目)
min_col=2, max_col=3, # データのある列(B列〜C列)
):
for cell in row:
cell.number_format = "0.0"
# 新しいシートを作成する
ws2 = wb.create_sheet(title=SHEET2_NAME)
ws2.cell(row=2, column=1, value="最高値")
ws2.cell(row=3, column=1, value="平均値")
ws2.cell(row=4, column=1, value="最低値")
ws2.cell(row=1, column=2, value="温度")
ws2.cell(row=2, column=2, value=f"=MAX('{SHEET1_NAME}'!B:B)") # B列(温度)の最大値
ws2.cell(row=3, column=2, value=f"=AVERAGE('{SHEET1_NAME}'!B:B)") # B列(温度)の平均値
ws2.cell(row=4, column=2, value=f"=MIN('{SHEET1_NAME}'!B:B)") # B列(温度)の最小値
ws2.cell(row=1, column=3, value="湿度")
ws2.cell(row=2, column=3, value=f"=MAX('{SHEET1_NAME}'!C:C)") # C列(湿度)の最大値
ws2.cell(row=3, column=3, value=f"=AVERAGE('{SHEET1_NAME}'!C:C)") # C列(湿度)の平均値
ws2.cell(row=4, column=3, value=f"=MIN('{SHEET1_NAME}'!C:C)") # C列(湿度)の最小値
# 保存する
wb.save("sample.xlsx")
if __name__ == "__main__":
main()
作成したエクセルファイル
テスト1 シート
各種スタイルの設定もできています。
テスト2 シート
エクセル関数も使えました。
さいごに
Pythonでエクセルファイルを作成してみました。
OpenPyXLの雰囲気やおおよその使い方を把握できました。
公式ドキュメントには、他にもたくさんの機能が書かれているので、参考にしてください。